#include "knob.h"
#include <allegro5/allegro5.h>
#include "knobskin.h"

Knob::Knob(KnobSkin *pSkin, Point start, int min, int max)
     : m_pSkin(pSkin), m_start(start), m_min(min), m_max(max), m_pos(m_min) {
}

void Knob::setStart(Point start) {
     m_start = start;
}

Rect Knob::rect() {
     return Rect(m_start.x(), m_start.y(), m_pSkin->size(), m_pSkin->size());
}

void Knob::paint() {
     double p = (double)(m_pos - m_min) / (double)(m_max - m_min);
     if (p < 0)
	  p = 0;
     if (p > 1)
	  p = 1;
//     int deg = p * (DegreeCount - 1);
     Rect r = m_pSkin->rect(p);
     al_draw_bitmap_region(m_pSkin->bitmap(), r.x(), r.y(), r.width(), r.height(),
			   m_start.x(), m_start.y(), 0);
}

int Knob::min() {
     return m_min;
}

void Knob::setMin(int min) {
     m_min = min;
}

int Knob::max() {
     return m_max;
}

void Knob::setMax(int max) {
     m_max = max;
}

int Knob::pos() {
     return m_pos;
}

void Knob::setPos(int pos) {
     if (pos < m_min)
	  pos = m_min;
     if (pos > m_max)
	  pos = m_max;
     m_pos = pos;
}
